#!/bin/bash

# 判断输入参数是否为空
if [ -z "$1" ]; then
    echo "用法: $0 <脚本文件>"
    exit 1
fi

# 获取指定脚本文件的路径
script_file="$1"

# 检查指定的文件是否存在
if [ ! -f "$script_file" ]; then
    echo "错误: 文件 '$script_file' 不存在！"
    exit 1
fi

# 使用bash的语法检查功能检查脚本是否有语法错误
bash -n "$script_file" 2>/tmp/script_error.log

# 如果语法检查返回非零状态，表示存在语法错误
if [ $? -ne 0 ]; then
    echo "检测到 '$script_file' 中存在语法错误。"
    echo "错误详情："
    cat /tmp/script_error.log
    echo
    echo "按 'Q' 或 'q' 忽略错误并退出。"
    echo "按其他任意键用 Vim 打开文件进行编辑。"
    
    # 读取用户输入
    read -n 1 -s user_input
    echo

    # 判断用户输入是否为Q或q
    if [[ "$user_input" == "Q" || "$user_input" == "q" ]]; then
        echo "已退出，不进行编辑。"
        exit 0
    else
        # 打开指定的脚本文件进行编辑
        vim "$script_file"
    fi
else
    # 如果没有语法错误
    echo "未检测到 '$script_file' 中的语法错误。"
fi

# 删除临时文件
rm -f /tmp/script_error.log
